{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Optimal parade route\n",
    "\n",
    "# Topic references\n",
    "- [Iterated weighted $\\ell_1$ heuristic](http://stanford.edu/class/ee364b/lectures/l1_ext_slides.pdf)\n",
    "\n",
    "# Problem statement\n",
    "\n",
    "In this notebook, we'll tackle the problem of trying to protect a parade route by placing a limited number of guards.\n",
    "\n",
    "The parade route is discritized into $m$ points. There are $n$ possible guard locations with associated decision variable $x \\in \n",
    "\\lbrace 0,1\\rbrace^n$, where $x_i = 1$ if and only if a guard is placed at location $i$. Associated with guard location $i$ is a *coverage vector* $a_i \\in \\mathbf{R}^m$, which describes how well a guard placed at location $i$ would 'cover' each point in the parade route. We will assume that guard coverage is additive, so that the vector describing the total coverage of every edge is given by $Ax$, where $A \\in \\mathbf{R}^{m \\times n}$ has $a_i$ as its $i$th column.\n",
    "\n",
    "The parade route is only as secure as its least well-covered point. Our goal is to place $k$ guards to maximize the minimum coverage over the points in the route.\n",
    "\n",
    "# Optimization formulation\n",
    "\n",
    "We can formulate this as the optimization problem\n",
    "\n",
    "\\\\[\n",
    "\\begin{array}{ll}\n",
    "  \\mbox{maximize} & t \\\\\n",
    "  \\mbox{subject to} & t \\leq Ax\\\\\n",
    "  & x \\in \\lbrace 0,1 \\rbrace^n \\\\\n",
    "  & \\mathbf{1}^Tx = k.\n",
    "\\end{array}\n",
    "\\\\]\n",
    "\n",
    "This problem is nonconvex and, in general, NP-hard due to the Boolean decision variable.\n",
    "\n",
    "# Relaxation\n",
    "\n",
    "We can try to approach the problem with convex optimization by first forming the convex relaxation\n",
    "\n",
    "\\\\[\n",
    "\\begin{array}{ll}\n",
    "  \\mbox{maximize} & t \\\\\n",
    "  \\mbox{subject to} & t \\leq Ax\\\\\n",
    "  & 0 \\leq x \\leq 1 \\\\\n",
    "  & \\mathbf{1}^Tx = k,\n",
    "\\end{array}\n",
    "\\\\]\n",
    "by constraining $x \\in [0,1]^n$.\n",
    "\n",
    "In general, the solution to this problem, $x^\\star$, will have fractional values. As we want a Boolean allocation, we can use an [iterated weighted $\\ell_1$ heuristic](http://stanford.edu/class/ee364b/lectures/l1_ext_slides.pdf) to try to recover a Boolean solution.\n",
    "\n",
    "# Iterated weighted $\\ell_1$ heuristic\n",
    "\n",
    "To try and recover a Boolean solution, we will solve a sequence of convex problems where we add a linear term $-w^Tx$ to the objective, picking the weight vector $w \\in \\mathbf{R}^n_+$ at each iteration to try and induce a sparse solution vector $x^\\star$. The details can be found in the [Stanford EE364B lecture notes](http://stanford.edu/class/ee364b/lectures/l1_ext_slides.pdf).\n",
    "\n",
    "The algorithm consists of initializing $w = 0$ and repeating the two steps\n",
    "\n",
    "1. \\\\[\n",
    "\\begin{array}{ll}\n",
    "  \\mbox{maximize} & t  - w^Tx\\\\\n",
    "  \\mbox{subject to} & t \\leq Ax\\\\\n",
    "  & 0 \\leq x \\leq 1 \\\\\n",
    "  & \\mathbf{1}^Tx = k,\n",
    "\\end{array}\n",
    "\\\\]\n",
    "2. Let $w_i = \\alpha/(\\tau + x_i) \\forall i$\n",
    "\n",
    "until we reach a Boolean solution. Here, $\\alpha$ and $\\tau$ are adjusted to promote a sparse solution. Typical choices would be $\\alpha = 1$ and $\\tau = 10^{-4}$.\n",
    "\n",
    "Intuitively, the weight vector $w$ is incentivizing elements of $x$ which were close to zero in the last iteration towards zero in the next iteration.\n",
    "\n",
    "# Example\n",
    "\n",
    "We create a parade route in the unit square $[0,1] \\times [0,1]$ by generating points along a connected sequence of line segments. Possible guard locations are a set of randomly placed points in the unit square. Guards' coverage of points in the parade route is a function of distance between the two points. We also add buildings in the unit square to obstruct the guards' view. The guard has no effect on a point if his line of sight is obstructed. We generate the $A$ matrix for this problem instance below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import cvxpy as cp\n",
    "\n",
    "def form_path(points,n):\n",
    "    x, y = [], []\n",
    "    pold = points[0]\n",
    "    for p in points[1:]:\n",
    "        x += list(np.linspace(pold[0],p[0],n))\n",
    "        y += list(np.linspace(pold[1],p[1],n))\n",
    "        pold = p\n",
    "\n",
    "    path = np.array([x,y]).T\n",
    "    return path\n",
    "\n",
    "def form_grid(k):\n",
    "    xs = list(np.linspace(0,1,k))\n",
    "    ys = list(np.linspace(0,1,k))\n",
    "\n",
    "    locations = []\n",
    "    for x in xs:\n",
    "        for y in ys:\n",
    "            locations.append(np.array((x,y)))\n",
    "    return np.array(locations).T\n",
    "\n",
    "def guard_sets(k,num,noise):\n",
    "    guard_set = []\n",
    "    grid = form_grid(k)\n",
    "    for i in range(num):\n",
    "        pert = noise*np.random.randn(*grid.shape)\n",
    "        guard_set.append( grid+pert )\n",
    "    return np.hstack(guard_set)\n",
    "\n",
    "def inRect(p,rect):\n",
    "    x,y,w,h = rect\n",
    "    return x <= p[0] and p[0] <= x + w and y <= p[1] and p[1] <= y + h\n",
    "\n",
    "def remove_guards(guards,buildings):\n",
    "    '''Remove guards inside buildings and outside unit square.'''\n",
    "    outside = []\n",
    "    for i, guard in enumerate(guards.T):\n",
    "        inside = False\n",
    "        for build in buildings:\n",
    "            if inRect(guard,build):\n",
    "                inside = True\n",
    "                break\n",
    "            if not inRect(guard,(0,0,1,1)):\n",
    "                inside = True\n",
    "                break\n",
    "        if not inside:\n",
    "            outside.append(i)\n",
    "    \n",
    "    return guards[:,outside]\n",
    "\n",
    "def intersect(p1,p2,xmin,xmax,ymin,ymax):\n",
    "    '''determine if a rectangle given by xy limits blocks the line of sight between p1 and p2'''\n",
    "\n",
    "    block = False\n",
    "    \n",
    "    # if either point inside block\n",
    "    for p in [p1,p1]:\n",
    "        if xmin <= p[0] and p[0] <= xmax and ymin <= p[1] and p[1] <= ymax:\n",
    "            return True\n",
    "    \n",
    "    # if the two points are equal at this stage, then they are outside the block\n",
    "    if p1[0] == p2[0] and p1[1] == p2[1]:\n",
    "        return False\n",
    "    \n",
    "    \n",
    "    if p2[0] != p1[0]:\n",
    "        for x in [xmin,xmax]:\n",
    "            alpha = (x-p1[0])/(p2[0] - p1[0])\n",
    "            y = p1[1] + alpha*(p2[1] - p1[1])\n",
    "\n",
    "            if 0 <= alpha and alpha <= 1 and ymin <= y and y <= ymax:\n",
    "                return True\n",
    "            \n",
    "    if p2[1] != p1[1]:\n",
    "        for y in [ymin,ymax]:\n",
    "            alpha = (y-p1[1])/(p2[1] - p1[1])\n",
    "            x = p1[0] + alpha*(p2[0] - p1[0])\n",
    "\n",
    "            if 0 <= alpha and alpha <= 1 and xmin <= x and x <= xmax:\n",
    "                return True\n",
    "        \n",
    "    return False\n",
    "\n",
    "def p_evade(x,y,r=.5,minval=.1):\n",
    "    d = np.linalg.norm(x-y)\n",
    "    if d > r:\n",
    "        return 1\n",
    "    return (1-minval)*d/r + minval\n",
    "\n",
    "def get_guard_effects(path, guards, buildings, evade_func):\n",
    "    guard_effects = []\n",
    "    for guard in guards.T:\n",
    "        guard_effect = []\n",
    "        for p in path:\n",
    "            prob = 1\n",
    "            if not np.any([intersect(p,guard,x,x+w,y,y+h) for x,y,w,h in buildings]):\n",
    "                prob = evade_func(p,guard)\n",
    "            guard_effect.append(prob)\n",
    "        guard_effects.append(guard_effect)\n",
    "    return np.array(guard_effects).T\n",
    "\n",
    "    locations = []\n",
    "    for x in xs:\n",
    "        for y in ys:\n",
    "            point = np.array((x,y))\n",
    "            detect_p = []\n",
    "            for r in path:\n",
    "                detect_p.append(p_evade(point,r,r=.5,m=0))\n",
    "            locations.append((point,np.array(detect_p)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x105d17cc0>]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(0)\n",
    "\n",
    "buildings = [(.1,.1,.4,.1),\n",
    "             (.6,.1,.1,.4),\n",
    "             (.1,.3,.4,.1),\n",
    "             (.1,.5,.4,.1),\n",
    "             (.4,.7,.4,.1),\n",
    "             (.8,.1,.1,.3),\n",
    "             (.8,.5,.2,.1),\n",
    "             (.2,.7,.1,.3),\n",
    "             (.0,.7,.1,.1),\n",
    "             (.6,.9,.1,.1),\n",
    "             (.9,.7,.1,.2)]\n",
    "\n",
    "n = 10\n",
    "\n",
    "points = [(.05,0),(.05,.25),(.55,.25),(.55,.6),(.75,.6),(.75,.05),(.95,.05), (.95,.45),(.75,.45), (.75,.65),(.85,.65),\n",
    "          (.85,.85),(.35,.85),(.35,.65),(.15,.65),(.15,1)]\n",
    "\n",
    "path = form_path(points,n)\n",
    "\n",
    "g = guard_sets(12,4,.02)\n",
    "g = remove_guards(g,buildings)\n",
    "\n",
    "guard_effects = get_guard_effects(path, g, buildings, p_evade)\n",
    "\n",
    "A = 1 - np.log(guard_effects)\n",
    "\n",
    "fig = plt.figure(figsize=(10,10))\n",
    "ax = plt.subplot(111,aspect='equal')\n",
    "for x,y,w,h in buildings:\n",
    "    rect = plt.Rectangle((x,y),w,h,fc='y',alpha=.3)\n",
    "    ax.add_patch(rect)\n",
    "\n",
    "ax.plot(path[:,0],path[:,1],'o')\n",
    "\n",
    "ax.plot(g[0,:],g[1,:],'ro',alpha=.3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We perform the iterative algorithm below. At each step, we plot the vector $x$, demonstrating that it becomes increasingly sparse at each iteration."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "final objective value: -10.27091799207174\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_guards = 12\n",
    "tau = 1e-2\n",
    "\n",
    "m,n = A.shape\n",
    "\n",
    "w = np.zeros(n)\n",
    "\n",
    "for i in range(3):\n",
    "    x = cp.Variable(shape=n)\n",
    "    t = cp.Variable(shape=1)\n",
    "\n",
    "    objective = cp.Maximize(t - x.T*w)\n",
    "    constr = [0 <=x, x <= 1, t <= A*x, cp.sum(x) == num_guards]\n",
    "    cp.Problem(objective, constr).solve(verbose=False)\n",
    "    x = np.array(x.value).flatten()\n",
    "    w = 2/(tau+np.abs(x))\n",
    "    fig = plt.figure(figsize=(5,5))\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.plot(x,'o')\n",
    "\n",
    "xsol = x\n",
    "print(\"final objective value: {}\".format(objective.value))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Below, we plot the final Boolean allocation. The blue dots represent the parade route. The red dots represent the possible guard placement locations. The green dots show the actual guard placements. Yellow rectangles are buildings which obstruct the guards' view."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0xb1853f1d0>]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAJCCAYAAAA7hTjJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzs3XtwW9d9L/rvAkiCIEEQskDRIqhXZJlyTFlRQuphX8dN7FRKXNeSm55bqz19TK910qP2ztxRdSfO9bQ5OblxztXV9J57qumM0kd6mpHbtNeinSaxkjhN7PhIFOTINilbDyuxbIASHzJJECRIkMC+fyxBBEGABMj9WHvv72fGA2NzC3vhsfb+7bV+ay2haRqIiIiIaJbH6gIQERERqYYBEhEREVEBBkhEREREBRggERERERVggERERERUgAESERERUQEGSEREREQFGCARERERFWCARERERFSgyqoDh8Nhbf369VYdnoiIiFzo9ddfH9I0rWmx/SwLkNavX49z585ZdXgiIiJyISHEtXL2YxcbERERUQEGSEREREQFGCARERERFWCARERERFSAARIRERFRAQZIRERERAUYIBEREREVYIBEREREVIABEhEREVEBBkhEREREBRggERERERVggERERERUgAESERERUQEGSEREREQFGCARERERFWCARERERFSAARIRERFRAQZIRERERAUYIBEREREVWDRAEkL8rRBiQAjRW+LvQgjx/woh3hVCvCWE+Lj+xSQiIiIyT1UZ+3wTwF8C+O8l/v5ZAJtu/bcDwF/deiTFdZ2P48ipS+gbSaEl5Mfh3W3Yuy1idbHI7mIxIBoFBgeBpiagsxNobbW6VETG4W/ekRYNkDRNe0UIsX6BXR4H8N81TdMAnBFChIQQqzVNu65TGZ3NoorVdT6Op5/vQWo6AwCIj6Tw9PM9GJkcxB13vI8LAxdwbfQaJmcmUVtVi3WN63DvqnuxI7IDzYFmw8tHJah+Io7FgBdeAEIhoLkZSCbl88cfV6ucZBzVf6N6y//Ne73AT38KfPvbwMMPA3v2OPu9O1w5LUiLiQD4IO957NY2BkiLsfBicuTUpdvBEQBkkER/9if433/0S/zafS0I+oII14XhFV5ktAz6x/tx5eIVnHznJDpaOrB/y36s8K8wtIxUwA7BRzQq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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(10,10))\n",
    "ax = plt.subplot(111,aspect='equal')\n",
    "for x,y,w,h in buildings:\n",
    "    rect = plt.Rectangle((x,y), w, h, fc='y', alpha=.3)\n",
    "    ax.add_patch(rect)\n",
    "\n",
    "ax.plot(path[:,0], path[:,1], 'o')\n",
    "\n",
    "ax.plot(g[0,:], g[1,:], 'ro', alpha=.3)\n",
    "ax.plot(g[0,xsol > .5], g[1,xsol > .5], 'go', markersize=20, alpha=.5)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
